package com.virgo.redis.config;

import lombok.Data;
import org.redisson.Redisson;
import org.redisson.api.RedissonClient;
import org.redisson.config.Config;
import org.redisson.config.SingleServerConfig;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.context.annotation.Bean;
import org.springframework.stereotype.Component;
import org.springframework.util.StringUtils;

@Component
@Data
@ConfigurationProperties(prefix = "spring.data.redis")
public class RedissonConfig {

	private String host;

	private String password;

	private String port;

	private Integer timeout = 3000;

	private final static String ADDRESS_PREFIX = "redis://";

	/**
	 * 自动装配
	 */
	@Bean
	RedissonClient redissonSingle() {
		Config config = new Config();

		if(!StringUtils.hasText(host)){
			throw new RuntimeException("host is  empty");
		}
		SingleServerConfig serverConfig = config.useSingleServer()
				.setAddress(ADDRESS_PREFIX + this.host + ":" + port)
				.setTimeout(this.timeout);
		if(StringUtils.hasText(this.password)) {
			serverConfig.setPassword(this.password);
		}
		return Redisson.create(config);
	}

}